#ifndef _OPERATOR_H
#define _OPERATOR_H

#include <string>

enum OpType {
    SQRT=-1;
    INV=-2;

    SUM=10,
    SUB=11,
    MULT=12,
    DIV=13,
    TOOGLE=14,
    OPEN_PARENTESIS=15,
    CLOSE_PARENTESIS=16,
    CLEAR = 17
};

enum OpPriority { LOW=0, HIGH=1 };

class Operator {
  public:
    Operator(OpType ot, std::string content);         //TODO: Change to QString
    ~Operator();

    double exec(std::string num);                      //TODO Change to QString 
    OpType getType(){ return m_type; }

  private:
    double toDouble(std::string input);              //TODO Change to Qstring

    OpType m_type;
    OpPriority m_priority;
    std::string m_content;                       //TODO Change to QString
};

#endif
